Der erste Teil der Analyse gibt einen Übersicht über den Datensatz. Im folgenden werden die Daten aller Probanden dargestellt, um einen Überblick darüber zu geben, wie die Verteilung aller Probanden des Experiments ist.

Für die Auswertung, werden die Daten der Probanden genutzt, bei denen keine Farbfehlsichtigkeit vorliegt. Dazu wird der original Datensatz dementsprechend bereinigt und die Personen mit Farbfehlsichtigkeit rausgefiltert. Die Probanden mit Farbfehlsichtigkeit werden über die drei gestellten Aufgaben des Ishihara-Tests und die Zeit der Bearbeitung des Ishihara-Test identifiziert. Dabei werden Probanden aussortiert die eine oder mehrere Aufgaben falsch beantwortet haben und Probanden deren Bearbeitungszeit über 2 Minuten beträgt.

Demographie der Probanden

Im Folgenden werden die demographischen Daten graphisch dargestellt und jeweils für alle Probanden und die Probanden ohne Farbfehlsichtigkeit gegenübergestellt, um die Verteilung zu vergleichen.

Demographische Daten im Vergleich

Die Vergleichsdarstellung der demographischen Daten ergibt, dass sich durch die Bereinigung der Daten die Verteilung der Gruppen nicht deutlich verändert.

Verteilung der richtig beantworteten Aufgaben

Nachfolgend wird die Anzahl der richtig beantworteten Aufgaben betrachtet. Dazu werden Subsets der jeweiligen Gruppen (z.B. nach biologischem Geschlecht) erstellt. Und die Spalte “Richtig” wird als Boxplot geplottet, um die Verteilung der richtigen Aufgaben zu veranschaulichen.

Die Werte des Boxplots nochmal als Tabelle:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  76.00   95.00   97.00   95.71   98.25  100.00 

Der Boxplot reicht von 76 bis 100 richtige Aufgaben. Der Median liegt bei 97 richtigen Aufgaben.

Die Werte des Boxplots nochmal als Tabelle:

Biologisches Geschlecht Weiblich:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  85.00   95.00   97.00   95.91   98.00  100.00 

Biologisches Geschlecht Männlich:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  76.00   95.00   97.00   95.53   99.00  100.00 

Bei der Betrachtung nach biologischem Geschlecht kann festgehalten werden, dass der Median beider Gruppen 97 richtiger Antworten entspricht. Bei den Probanden die für das biologische Geschlecht männlich angeben, lassen sich mehr Außen- und Fernpunkte erkennen.

Alle Probanden ohne Farbfehlsichtigkeit nach Betriebssystem

Die Werte des Boxplots nochmal als Tabelle:

iOS:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  87.00   95.00   97.00   95.95   98.00  100.00 

Android:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  76.00   95.00   97.00   95.54   99.00  100.00 

Durchschnittliche Zeit pro Aufgabe

Um einen Lern- oder Ermüdungseffekt zu erkennen, werden die Durchschnittszeiten pro Aufgabe erfasst. Dazu werden die Zeitangaben der einzelnen Aufgaben in einer Tabelle zusammengefasst. Anschließend wird der Durchschnitt der der Spalten berechnet und in einer neuen Liste gespeichert. Dieses Vorgehen wurde ebenso für die jeweiligen Gruppen (z.B. biologisches Geschlecht, Alter) durchgeführt. Das Ergebnis sieht wie folgt aus:

     Z1      Z2      Z3      Z4      Z5      Z6 
3059.59 2910.52 3037.31 2770.29 2680.16 2590.16 

Die Betrachtung der Grafik, lässt darauf schließen, dass es zu einem Lerneffekt kommt. Um dies zu bestätigen wird eine Grafik mit einer Regressiongerade geplottet.

Die Regressionsgerade bestätigt die Annahme das die Probanden zum Ende des Experiments die Aufgaben schneller fertigstellen. Was auf einen Lerneffekt bei der Bearbeitung der Aufgaben schließen lässt.

Nach biologischem Geschlecht

Anschließend wird überprüft, inwieweit das biologische Geschlecht einen Einfluss auf die durchschnittliche Bearbeitungszeit der Aufgaben haben könnte.

Die Grafiken ergeben das die Probanden die als biologisches Geschlecht männlich angeben durchschnittlich 176 Millisekunden mehr pro Aufgabe benötigen. Bei beiden Gruppen, ist davon auszugehen, dass ein Lerneffekt vorhanden ist.

LS0tDQp0aXRsZTogIkF1c3dpcmt1bmdlbiBkZXMgU3Ryb29wLUVmZmVrdHMgYXVmIG1vYmlsZSBCZW51dHplcm9iZXJmbMOkY2hlbiINCnN1YnRpdGxlOiAiQW5hbHlzZSBUZWlsIDEgLSBCZXNjaHJlaWJlbmRlIFN0YXRpc3RpayINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQpgYGB7ciBzZXR1cH0NCiNzb3VyY2UoInNjcmlwdHMvd2lkZV90b19sb25nLlIiKQ0Kc291cmNlKCJzY3JpcHRzL2dldF9tZWFuX3RwdC5SIikNCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UpDQpgYGANCg0KDQpgYGB7cn0NCmRhdGFfb3JpZ2luYWwgPC0gcmVhZF9jc3YoImRhdGEvZGF0YV9vcmlnaW5hbC5jc3YiLCANCiAgICBjb2xfdHlwZXMgPSBjb2xzKERhdHVtID0gY29sX2RhdGUoZm9ybWF0ID0gIiVkLiVtLiVZIiksIA0KICAgICAgICBVaHJ6ZWl0ID0gY29sX3RpbWUoZm9ybWF0ID0gIiVIOiVNIiksIA0KICAgICAgICBgWmVpdCBnZXNhbXRgID0gY29sX3RpbWUoZm9ybWF0ID0gIiVIOiVNOiVPUyIpLCANCiAgICAgICAgYElzaGloYXJhIERhdWVyYCA9IGNvbF90aW1lKGZvcm1hdCA9ICIlSDolTTolUyIpKSkNCmBgYA0KDQpgYGB7cn0NCiMgUmVtb3ZlIHRyb2xsDQpkYXRhX29yaWdpbmFsIDwtIGRhdGFfb3JpZ2luYWxbLWMoMTA3KSwgXQ0KYGBgDQoNCmBgYHtyfQ0KIyBSZW1vdmUgYWxsIHdpdGggcmVkLWdyZWVuLWJsaW5kbmVzcw0KZGF0YV9vcmlnaW5hbCRgSXNoaWhhcmEgRGF1ZXJgIDwtIGZvcm1hdChhcy5QT1NJWGN0KGRhdGFfb3JpZ2luYWwkJ0lzaGloYXJhIERhdWVyJyksICIlSDolTTolT1MiKQ0KDQpkZl9ub0NCIDwtIHN1YnNldChkYXRhX29yaWdpbmFsLCBkYXRhX29yaWdpbmFsJGBJc2hpaGFyYSA0MmAgPT0gNDIgJiBkYXRhX29yaWdpbmFsJGBJc2hpaGFyYSAzYCA9PSAzICYgZGF0YV9vcmlnaW5hbCRgSXNoaWhhcmEgTGluaWVuYCA9PSAia2VpbmUiICYgZGF0YV9vcmlnaW5hbCRgSXNoaWhhcmEgRGF1ZXJgIDwgIjAwOjAyOjAwIikNCmBgYA0KDQpEZXIgZXJzdGUgVGVpbCBkZXIgQW5hbHlzZSBnaWJ0IGVpbmVuIMOcYmVyc2ljaHQgw7xiZXIgZGVuIERhdGVuc2F0ei4NCkltIGZvbGdlbmRlbiB3ZXJkZW4gZGllIERhdGVuIGFsbGVyIFByb2JhbmRlbiBkYXJnZXN0ZWxsdCwgdW0gZWluZW4gw5xiZXJibGljayBkYXLDvGJlciB6dSBnZWJlbiwgd2llIGRpZSBWZXJ0ZWlsdW5nIGFsbGVyIFByb2JhbmRlbiBkZXMgRXhwZXJpbWVudHMgaXN0LiANCg0KRsO8ciBkaWUgQXVzd2VydHVuZywgd2VyZGVuIGRpZSBEYXRlbiBkZXIgUHJvYmFuZGVuIGdlbnV0enQsIGJlaSBkZW5lbiBrZWluZSBGYXJiZmVobHNpY2h0aWdrZWl0IHZvcmxpZWd0LiBEYXp1IHdpcmQgZGVyIG9yaWdpbmFsIERhdGVuc2F0eiBkZW1lbnRzcHJlY2hlbmQgYmVyZWluaWd0IHVuZCBkaWUgUGVyc29uZW4gbWl0IEZhcmJmZWhsc2ljaHRpZ2tlaXQgcmF1c2dlZmlsdGVydC4gRGllIFByb2JhbmRlbiBtaXQgRmFyYmZlaGxzaWNodGlna2VpdCB3ZXJkZW4gw7xiZXIgZGllIGRyZWkgZ2VzdGVsbHRlbiBBdWZnYWJlbiBkZXMgSXNoaWhhcmEtVGVzdHMgdW5kIGRpZSBaZWl0IGRlciBCZWFyYmVpdHVuZyBkZXMgSXNoaWhhcmEtVGVzdCBpZGVudGlmaXppZXJ0LiBEYWJlaSB3ZXJkZW4gUHJvYmFuZGVuIGF1c3NvcnRpZXJ0IGRpZSBlaW5lIG9kZXIgbWVocmVyZSBBdWZnYWJlbiBmYWxzY2ggYmVhbnR3b3J0ZXQgaGFiZW4gdW5kIFByb2JhbmRlbiBkZXJlbiBCZWFyYmVpdHVuZ3N6ZWl0IMO8YmVyIDIgTWludXRlbiBiZXRyw6RndC4gDQoNCiMgRGVtb2dyYXBoaWUgZGVyIFByb2JhbmRlbg0KDQpJbSBGb2xnZW5kZW4gd2VyZGVuIGRpZSBkZW1vZ3JhcGhpc2NoZW4gRGF0ZW4gZ3JhcGhpc2NoIGRhcmdlc3RlbGx0IHVuZCBqZXdlaWxzIGbDvHIgYWxsZSBQcm9iYW5kZW4gdW5kIGRpZSBQcm9iYW5kZW4gb2huZSBGYXJiZmVobHNpY2h0aWdrZWl0IGdlZ2Vuw7xiZXJnZXN0ZWxsdCwgdW0gZGllIFZlcnRlaWx1bmcgenUgdmVyZ2xlaWNoZW4uIA0KYGBge3J9DQptIDwtIHN1bSh3aXRoKGRhdGFfb3JpZ2luYWwsZGF0YV9vcmlnaW5hbCRHZXNjaGxlY2h0ID09ICJtIikpDQoNCmYgPC0gc3VtKHdpdGgoZGF0YV9vcmlnaW5hbCxkYXRhX29yaWdpbmFsJEdlc2NobGVjaHQgPT0gImYiKSkNCmBgYA0KYGBge3J9DQpsaWJyYXJ5KHBsb3RseSkNCmxhYmVscyA9IGMoJ03DpG5uZXInLCdGcmF1ZW4nKQ0KdmFsdWVzID0gYyhtLCBmKQ0KDQpmaWcgPC0gcGxvdF9seSh0eXBlPSdwaWUnLCBsYWJlbHM9bGFiZWxzLCB2YWx1ZXM9dmFsdWVzLCANCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdwZXJjZW50JywNCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh0aXRsZSA9ICJWZXJ0ZWlsdW5nIEdlc2NobGVjaHQgYWxsZXIgUHJvYmFuZGVuIG49MTIwIiwNCiAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQgPSBsaXN0KG9yaWVudGF0aW9uID0gJ2gnKSwNCiAgICAgICAgICAgICAgICAgICAgICBhdXRvc2l6ZSA9IEYpDQoNCmZpZw0KYGBgDQpgYGB7cn0NCm5vQ0JfbSA8LSBzdW0od2l0aChkZl9ub0NCLGRmX25vQ0IkR2VzY2hsZWNodCA9PSAibSIpKQ0Kbm9DQl9mIDwtIHN1bSh3aXRoKGRmX25vQ0IsZGZfbm9DQiRHZXNjaGxlY2h0ID09ICJmIikpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KHBsb3RseSkNCg0KbGFiZWxzID0gYygnTcOkbm5lcicsJ0ZyYXVlbicpDQp2YWx1ZXMgPSBjKG5vQ0JfbSwgbm9DQl9mKQ0KDQpmaWcgPC0gcGxvdF9seSh0eXBlPSdwaWUnLCBsYWJlbHM9bGFiZWxzLCB2YWx1ZXM9dmFsdWVzLCANCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdwZXJjZW50JywNCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh0aXRsZSA9ICJWZXJ0ZWlsdW5nIEdlc2NobGVjaHQgUHJvYmFuZGVuIG9obmUgRmFyYmZlaGxzaWNodGlna2VpdCBuPTEwMCIsDQogICAgICAgICAgICAgICAgICAgICAgbGVnZW5kID0gbGlzdChvcmllbnRhdGlvbiA9ICdoJyksDQogICAgICAgICAgICAgICAgICAgICAgYXV0b3NpemUgPSBGKQ0KZmlnDQoNCmBgYA0KDQpgYGB7cn0NCmExMSA8LSBzdW0od2l0aChkYXRhX29yaWdpbmFsLGRhdGFfb3JpZ2luYWwkQWx0ZXIgPT0gInVudGVyIDExIikpDQphMTFfMjAgPC0gc3VtKHdpdGgoZGF0YV9vcmlnaW5hbCxkYXRhX29yaWdpbmFsJEFsdGVyID09ICIxMS0yMCIpKQ0KYTIxXzMwIDwtIHN1bSh3aXRoKGRhdGFfb3JpZ2luYWwsZGF0YV9vcmlnaW5hbCRBbHRlciA9PSAiMjEtMzAiKSkNCmEzMV80MCA8LSBzdW0od2l0aChkYXRhX29yaWdpbmFsLGRhdGFfb3JpZ2luYWwkQWx0ZXIgPT0gIjMxLTQwIikpDQphNDFfNTAgPC0gc3VtKHdpdGgoZGF0YV9vcmlnaW5hbCxkYXRhX29yaWdpbmFsJEFsdGVyID09ICI0MS01MCIpKQ0KYTUxXzYwIDwtIHN1bSh3aXRoKGRhdGFfb3JpZ2luYWwsZGF0YV9vcmlnaW5hbCRBbHRlciA9PSAiNTEtNjAiKSkNCmE2MCA8LSBzdW0od2l0aChkYXRhX29yaWdpbmFsLGRhdGFfb3JpZ2luYWwkQWx0ZXIgPT0gIsO8YmVyIDYwIikpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KHBsb3RseSkNCmxhYmVscyA9IGMoJ3VudGVyIDExJywnMTEtMjAnLCcyMS0zMCcsJzMxLTQwJywnNDEtNTAnLCc1MS02MCcsJ8O8YmVyIDYwJykNCnZhbHVlcyA9IGMoYTExLCBhMTFfMjAsIGEyMV8zMCwgYTMxXzQwLCBhNDFfNTAsIGE1MV82MCwgYTYwKQ0KDQpmaWcgPC0gcGxvdF9seSh0eXBlPSdwaWUnLCBsYWJlbHM9bGFiZWxzLCB2YWx1ZXM9dmFsdWVzLCANCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdwZXJjZW50JywNCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh0aXRsZSA9ICJWZXJ0ZWlsdW5nIEFsdGVyIGFsbGVyIFByb2JhbmRlbiBuPTEyMCIsDQogICAgICAgICAgICAgICAgICAgICAgbGVnZW5kID0gbGlzdChvcmllbnRhdGlvbiA9ICdoJyksDQogICAgICAgICAgICAgICAgICAgICAgYXV0b3NpemUgPSBGKQ0KZmlnDQpgYGANCmBgYHtyfQ0Kbm9CQ19hMTEgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJEFsdGVyID09ICJ1bnRlciAxMSIpKQ0Kbm9CQ19hMTFfMjAgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJEFsdGVyID09ICIxMS0yMCIpKQ0Kbm9CQ19hMjFfMzAgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJEFsdGVyID09ICIyMS0zMCIpKQ0Kbm9CQ19hMzFfNDAgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJEFsdGVyID09ICIzMS00MCIpKQ0Kbm9CQ19hNDFfNTAgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJEFsdGVyID09ICI0MS01MCIpKQ0Kbm9CQ19hNTFfNjAgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJEFsdGVyID09ICI1MS02MCIpKQ0Kbm9CQ19hNjAgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJEFsdGVyID09ICLDvGJlciA2MCIpKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShwbG90bHkpDQpsYWJlbHMgPSBjKCd1bnRlciAxMScsJzExLTIwJywnMjEtMzAnLCczMS00MCcsJzQxLTUwJywnNTEtNjAnLCfDvGJlciA2MCcpDQp2YWx1ZXMgPSBjKG5vQkNfYTExLCBub0JDX2ExMV8yMCwgbm9CQ19hMjFfMzAsIG5vQkNfYTMxXzQwLCBub0JDX2E0MV81MCwgbm9CQ19hNTFfNjAsIG5vQkNfYTYwKQ0KDQpmaWcgPC0gcGxvdF9seSh0eXBlPSdwaWUnLCBsYWJlbHM9bGFiZWxzLCB2YWx1ZXM9dmFsdWVzLCANCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdwZXJjZW50JywNCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh0aXRsZSA9ICJWZXJ0ZWlsdW5nIEFsdGVyIGRlciBQcm9iYW5kZW4gb2huZSBGYXJiZmVobHNpY2h0aWdrZWl0IG49MTAwIiwNCiAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQgPSBsaXN0KG9yaWVudGF0aW9uID0gJ2gnKSwNCiAgICAgICAgICAgICAgICAgICAgICBhdXRvc2l6ZSA9IEYpDQpmaWcNCmBgYA0KDQpgYGB7cn0NCm10IDwtIHN1bSh3aXRoKGRhdGFfb3JpZ2luYWwsZGF0YV9vcmlnaW5hbCRgU21hcnRwaG9uZSBOdXR6dW5nYCA9PSAibWVocm1hbHMgdMOkZ2xpY2giKSkNCnQgPC0gc3VtKHdpdGgoZGF0YV9vcmlnaW5hbCxkYXRhX29yaWdpbmFsJGBTbWFydHBob25lIE51dHp1bmdgID09ICJ0w6RnbGljaCIpKQ0KbXcgPC0gc3VtKHdpdGgoZGF0YV9vcmlnaW5hbCxkYXRhX29yaWdpbmFsJGBTbWFydHBob25lIE51dHp1bmdgID09ICJtZWhybWFscyBkaWUgV29jaGUiKSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkocGxvdGx5KQ0KbGFiZWxzID0gYygnbWVocm1hbHMgdMOkZ2xpY2gnLCd0w6RnbGljaCcsJ21laHJtYWxzIGRpZSBXb2NoZScpDQp2YWx1ZXMgPSBjKG10LHQsIG13KQ0KDQpmaWcgPC0gcGxvdF9seSh0eXBlPSdwaWUnLCBsYWJlbHM9bGFiZWxzLCB2YWx1ZXM9dmFsdWVzLCANCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdwZXJjZW50JywNCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh0aXRsZSA9ICJWZXJ0ZWlsdW5nIGRlciBOdXR6dW5nc2jDpHVmaWdrZWl0IGFsbGVyIFByb2JhbmRlbiBuPTEyMCIsDQogICAgICAgICAgICAgICAgICAgICAgbGVnZW5kID0gbGlzdChvcmllbnRhdGlvbiA9ICdoJyksDQogICAgICAgICAgICAgICAgICAgICAgYXV0b3NpemUgPSBGKQ0KZmlnDQpgYGANCg0KYGBge3J9DQpub0JDX210IDwtIHN1bSh3aXRoKGRmX25vQ0IsZGZfbm9DQiRgU21hcnRwaG9uZSBOdXR6dW5nYCA9PSAibWVocm1hbHMgdMOkZ2xpY2giKSkNCm5vQkNfdCA8LSBzdW0od2l0aChkZl9ub0NCLGRmX25vQ0IkYFNtYXJ0cGhvbmUgTnV0enVuZ2AgPT0gInTDpGdsaWNoIikpDQpub0JDX213IDwtIHN1bSh3aXRoKGRmX25vQ0IsZGZfbm9DQiRgU21hcnRwaG9uZSBOdXR6dW5nYCA9PSAibWVocm1hbHMgZGllIFdvY2hlIikpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KHBsb3RseSkNCmxhYmVscyA9IGMoJ21laHJtYWxzIHTDpGdsaWNoJywndMOkZ2xpY2gnLCdtZWhybWFscyBkaWUgV29jaGUnKQ0KdmFsdWVzID0gYyhub0JDX210LG5vQkNfdCxub0JDX213KQ0KDQpmaWcgPC0gcGxvdF9seSh0eXBlPSdwaWUnLCBsYWJlbHM9bGFiZWxzLCB2YWx1ZXM9dmFsdWVzLCANCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdwZXJjZW50JywNCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh0aXRsZSA9ICJWZXJ0ZWlsdW5nIGRlciBOdXR6dW5nc2jDpHVmaWdrZWl0IGRlciBQcm9iYW5kZW4gb2huZSBGYXJiZmVobHNpY2h0aWdrZWl0IG49MTAwIiwNCiAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQgPSBsaXN0KG9yaWVudGF0aW9uID0gJ2gnKSwNCiAgICAgICAgICAgICAgICAgICAgICBhdXRvc2l6ZSA9IEYpDQpmaWcNCmBgYA0KYGBge3J9DQpzcyA8LSBzdW0od2l0aChkYXRhX29yaWdpbmFsLGRhdGFfb3JpZ2luYWwkYFNtYXJ0cGhvbmUgTnV0enVuZ3NlcmZhaHJ1bmdgID09ICJzZWhyIHNpY2hlciIpKQ0KcyA8LSBzdW0od2l0aChkYXRhX29yaWdpbmFsLGRhdGFfb3JpZ2luYWwkYFNtYXJ0cGhvbmUgTnV0enVuZ3NlcmZhaHJ1bmdgID09ICJzaWNoZXIiKSkNCm1tIDwtIHN1bSh3aXRoKGRhdGFfb3JpZ2luYWwsZGF0YV9vcmlnaW5hbCRgU21hcnRwaG9uZSBOdXR6dW5nc2VyZmFocnVuZ2AgPT0gIm1pdHRlbG3DpMOfaWciKSkNCnUgPC0gc3VtKHdpdGgoZGF0YV9vcmlnaW5hbCxkYXRhX29yaWdpbmFsJGBTbWFydHBob25lIE51dHp1bmdzZXJmYWhydW5nYCA9PSAidW5zaWNoZXIiKSkNCnN1IDwtIHN1bSh3aXRoKGRhdGFfb3JpZ2luYWwsZGF0YV9vcmlnaW5hbCRgU21hcnRwaG9uZSBOdXR6dW5nc2VyZmFocnVuZ2AgPT0gInNlaHIgdW5zaWNoZXIiKSkNCmBgYA0KDQoNCmBgYHtyfQ0KbGlicmFyeShwbG90bHkpDQpsYWJlbHMgPSBjKCdzZWhyIHNpY2hlcicsJ3NpY2hlcicsJ21pdHRlbG3DpMOfaWcnLCd1bnNpY2hlcicsICdzZWhyIHVuc2ljaGVyJykNCnZhbHVlcyA9IGMoc3MscyxtbSx1LHN1KQ0KDQpmaWcgPC0gcGxvdF9seSh0eXBlPSdwaWUnLCBsYWJlbHM9bGFiZWxzLCB2YWx1ZXM9dmFsdWVzLCANCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdwZXJjZW50JywNCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh0aXRsZSA9ICJWZXJ0ZWlsdW5nIGRlciBOdXR6dW5nc3NpY2hlcmhlaXQgYWxsZXIgUHJvYmFuZGVuIG49MTIwIiwNCiAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQgPSBsaXN0KG9yaWVudGF0aW9uID0gJ2gnKSwNCiAgICAgICAgICAgICAgICAgICAgICBhdXRvc2l6ZSA9IEYpDQpmaWcNCmBgYA0KYGBge3J9DQpub0JDX3NzIDwtIHN1bSh3aXRoKGRmX25vQ0IsZGZfbm9DQiRgU21hcnRwaG9uZSBOdXR6dW5nc2VyZmFocnVuZ2AgPT0gInNlaHIgc2ljaGVyIikpDQpub0JDX3MgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJGBTbWFydHBob25lIE51dHp1bmdzZXJmYWhydW5nYCA9PSAic2ljaGVyIikpDQpub0JDX21tIDwtIHN1bSh3aXRoKGRmX25vQ0IsZGZfbm9DQiRgU21hcnRwaG9uZSBOdXR6dW5nc2VyZmFocnVuZ2AgPT0gIm1pdHRlbG3DpMOfaWciKSkNCm5vQkNfdSA8LSBzdW0od2l0aChkZl9ub0NCLGRmX25vQ0IkYFNtYXJ0cGhvbmUgTnV0enVuZ3NlcmZhaHJ1bmdgID09ICJ1bnNpY2hlciIpKQ0Kbm9CQ19zdSA8LSBzdW0od2l0aChkZl9ub0NCLGRmX25vQ0IkYFNtYXJ0cGhvbmUgTnV0enVuZ3NlcmZhaHJ1bmdgID09ICJzZWhyIHVuc2ljaGVyIikpDQpgYGANCg0KDQpgYGB7cn0NCmxpYnJhcnkocGxvdGx5KQ0KbGFiZWxzID0gYygnc2VociBzaWNoZXInLCdzaWNoZXInLCdtaXR0ZWxtw6TDn2lnJywndW5zaWNoZXInLCAnc2VociB1bnNpY2hlcicpDQp2YWx1ZXMgPSBjKG5vQkNfc3Msbm9CQ19zLG5vQkNfbW0sbm9CQ191LG5vQkNfc3UpDQoNCmZpZyA8LSBwbG90X2x5KHR5cGU9J3BpZScsIGxhYmVscz1sYWJlbHMsIHZhbHVlcz12YWx1ZXMsIA0KICAgICAgICAgICAgICAgdGV4dGluZm89J3BlcmNlbnQnLA0KICAgICAgICAgICAgICAgaW5zaWRldGV4dG9yaWVudGF0aW9uPSdyYWRpYWwnKQ0KZmlnIDwtIGZpZyAlPiUgbGF5b3V0KHRpdGxlID0gIlZlcnRlaWx1bmcgZGVyIE51dHp1bmdzc2ljaGVyaGVpdCBkZXIgUHJvYmFuZGVuIG9obmUgRmFyYmZlaGxzaWNodGlna2VpdCBuPTEwMCIsDQogICAgICAgICAgICAgICAgICAgICAgbGVnZW5kID0gbGlzdChvcmllbnRhdGlvbiA9ICdoJyksDQogICAgICAgICAgICAgICAgICAgICAgYXV0b3NpemUgPSBGKQ0KZmlnDQpgYGANCg0KYGBge3J9DQppT1MgPC0gc3VtKHdpdGgoZGF0YV9vcmlnaW5hbCxkYXRhX29yaWdpbmFsJE9TID09ICJpT1MiKSkNCmFuZHJvaWQgPC0gc3VtKHdpdGgoZGF0YV9vcmlnaW5hbCxkYXRhX29yaWdpbmFsJE9TID09ICJBbmRyb2lkIikpDQoNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkocGxvdGx5KQ0KbGFiZWxzID0gYygnaU9TJywgJ0FuZHJvaWQnKQ0KdmFsdWVzID0gYyhpT1MsIGFuZHJvaWQpDQoNCmZpZyA8LSBwbG90X2x5KHR5cGU9J3BpZScsIGxhYmVscz1sYWJlbHMsIHZhbHVlcz12YWx1ZXMsIA0KICAgICAgICAgICAgICAgdGV4dGluZm89J3BlcmNlbnQnLA0KICAgICAgICAgICAgICAgaW5zaWRldGV4dG9yaWVudGF0aW9uPSdyYWRpYWwnKQ0KZmlnIDwtIGZpZyAlPiUgbGF5b3V0KHRpdGxlID0gIlZlcnRlaWx1bmcgZGVyIE51dHp1bmdzc2ljaGVyaGVpdCBhbGxlciBQcm9iYW5kZW4gbj0xMjAiLA0KICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZCA9IGxpc3Qob3JpZW50YXRpb24gPSAnaCcpLA0KICAgICAgICAgICAgICAgICAgICAgIGF1dG9zaXplID0gRikNCmZpZw0KYGBgDQoNCmBgYHtyfQ0Kbm9CQ19pT1MgPC0gc3VtKHdpdGgoZGZfbm9DQixkZl9ub0NCJE9TID09ICJpT1MiKSkNCm5vQkNfYW5kcm9pZCA8LSBzdW0od2l0aChkZl9ub0NCLGRmX25vQ0IkT1MgPT0gIkFuZHJvaWQiKSkNCg0KYGBgDQogDQpgYGB7cn0NCmxpYnJhcnkocGxvdGx5KQ0KbGFiZWxzID0gYygnaU9TJywgJ0FuZHJvaWQnKQ0KdmFsdWVzID0gYyhub0JDX2lPUywgbm9CQ19hbmRyb2lkKQ0KDQpmaWcgPC0gcGxvdF9seSh0eXBlPSdwaWUnLCBsYWJlbHM9bGFiZWxzLCB2YWx1ZXM9dmFsdWVzLCANCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdwZXJjZW50JywNCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh0aXRsZSA9ICJWZXJ0ZWlsdW5nIGRlciBOdXR6dW5nc3NpY2hlcmhlaXQgZGVyIFByb2JhbmRlbiBvaG5lIEZhcmJmZWhsc2ljaHRpZ2tlaXQgbj0xMDAiLA0KICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZCA9IGxpc3Qob3JpZW50YXRpb24gPSAnaCcpLA0KICAgICAgICAgICAgICAgICAgICAgIGF1dG9zaXplID0gRikNCmZpZw0KYGBgDQojIyBEZW1vZ3JhcGhpc2NoZSBEYXRlbiBpbSBWZXJnbGVpY2ggDQpEaWUgVmVyZ2xlaWNoc2RhcnN0ZWxsdW5nIGRlciBkZW1vZ3JhcGhpc2NoZW4gRGF0ZW4gZXJnaWJ0LCBkYXNzIHNpY2ggZHVyY2ggZGllIEJlcmVpbmlndW5nIGRlciBEYXRlbiBkaWUgVmVydGVpbHVuZyBkZXIgR3J1cHBlbiBuaWNodCBkZXV0bGljaCB2ZXLDpG5kZXJ0Lg0KDQojIFZlcnRlaWx1bmcgZGVyIHJpY2h0aWcgYmVhbnR3b3J0ZXRlbiBBdWZnYWJlbiANCg0KTmFjaGZvbGdlbmQgd2lyZCBkaWUgQW56YWhsIGRlciByaWNodGlnIGJlYW50d29ydGV0ZW4gQXVmZ2FiZW4gYmV0cmFjaHRldC4gRGF6dSB3ZXJkZW4gU3Vic2V0cyBkZXIgamV3ZWlsaWdlbiBHcnVwcGVuICh6LkIuIG5hY2ggYmlvbG9naXNjaGVtIEdlc2NobGVjaHQpIGVyc3RlbGx0LiANClVuZCBkaWUgU3BhbHRlICJSaWNodGlnIiB3aXJkIGFscyBCb3hwbG90IGdlcGxvdHRldCwgdW0gZGllIFZlcnRlaWx1bmcgZGVyIHJpY2h0aWdlbiBBdWZnYWJlbiB6dSB2ZXJhbnNjaGF1bGljaGVuLg0KDQpgYGB7ciB9DQpmaWcgPC0gcGxvdF9seSh0eXBlID0gImJveCIpDQpmaWcgPC0gZmlnICU+JSBhZGRfdHJhY2UoeSA9IGRmX25vQ0IkYFJpY2h0aWdgLCBuYW1lPSJSaWNodGlnZSBBdWZnYWJlbiIpDQoNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh5YXhpcyA9IGxpc3QodGl0bGU9ICJBbnphaGwgcmljaHRpZyBiZWFudHdvcnRldGVyIEF1ZmdhYmVuIiksIA0KICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIlZlcnRlaWx1bmcgcmljaHRpZ2VyIEF1ZmdhYmVuIGFsbGVyIFByb2JhbmRlbiBvaG5lIEZhcmJmZWhsc2ljaHRpZ2tlaXQiLA0KICAgICAgICAgICAgICAgICAgICAgIGF1dG9zaXplID0gRikNCmZpZw0KYGBgDQpEaWUgV2VydGUgZGVzIEJveHBsb3RzIG5vY2htYWwgYWxzIFRhYmVsbGU6DQpgYGB7cn0NCnN1bW1hcnkoZGZfbm9DQiRgUmljaHRpZ2ApDQpgYGANCg0KRGVyIEJveHBsb3QgcmVpY2h0IHZvbiA3NiBiaXMgMTAwIHJpY2h0aWdlIEF1ZmdhYmVuLiBEZXIgTWVkaWFuIGxpZWd0IGJlaSA5NyByaWNodGlnZW4gQXVmZ2FiZW4uDQoNCmBgYHtyfQ0KICBub0JDX3N1YnNldF9tIDwtc3Vic2V0KGRmX25vQ0IsZGZfbm9DQiQnR2VzY2hsZWNodCcgPT0gJ20nKQ0KICBub0JDX3N1YnNldF9mIDwtc3Vic2V0KGRmX25vQ0IsZGZfbm9DQiQnR2VzY2hsZWNodCcgPT0gJ2YnKQ0KYGBgDQoNCmBgYHtyfQ0KZmlnIDwtIHBsb3RfbHkodHlwZSA9ICJib3giKQ0KZmlnIDwtIGZpZyAlPiUgYWRkX3RyYWNlKHkgPSBub0JDX3N1YnNldF9mJGBSaWNodGlnYCwgbmFtZT0iV2VpYmxpY2giKQ0KZmlnIDwtIGZpZyAlPiUgYWRkX3RyYWNlKHkgPSBub0JDX3N1YnNldF9tJGBSaWNodGlnYCwgbmFtZT0iTcOkbm5saWNoIikNCg0KZmlnIDwtIGZpZyAlPiUgbGF5b3V0KHlheGlzID0gbGlzdCh0aXRsZT0gIkFuemFobCByaWNodGlnIGJlYW50d29ydGV0ZXIgQXVmZ2FiZW4iKSwgDQogICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiVmVydGVpbHVuZyByaWNodGlnZXIgQXVmZ2FiZW4gbmFjaCBiaW9sb2dpc2NoZW0gR2VzY2hsZWNodCIsDQogICAgICAgICAgICAgICAgICAgICAgYXV0b3NpemUgPSBGKQ0KZmlnDQpgYGANCkRpZSBXZXJ0ZSBkZXMgQm94cGxvdHMgbm9jaG1hbCBhbHMgVGFiZWxsZToNCg0KQmlvbG9naXNjaGVzIEdlc2NobGVjaHQgV2VpYmxpY2g6DQpgYGB7cn0NCnN1bW1hcnkobm9CQ19zdWJzZXRfZiRgUmljaHRpZ2ApDQpgYGANCg0KQmlvbG9naXNjaGVzIEdlc2NobGVjaHQgTcOkbm5saWNoOg0KYGBge3J9DQpzdW1tYXJ5KG5vQkNfc3Vic2V0X20kYFJpY2h0aWdgKQ0KYGBgDQoNCkJlaSBkZXIgQmV0cmFjaHR1bmcgbmFjaCBiaW9sb2dpc2NoZW0gR2VzY2hsZWNodCBrYW5uIGZlc3RnZWhhbHRlbiB3ZXJkZW4sIGRhc3MgZGVyIE1lZGlhbiBiZWlkZXIgR3J1cHBlbiA5NyByaWNodGlnZXIgQW50d29ydGVuIGVudHNwcmljaHQuIEJlaSBkZW4gUHJvYmFuZGVuIGRpZSBmw7xyIGRhcyBiaW9sb2dpc2NoZSBHZXNjaGxlY2h0IG3DpG5ubGljaCBhbmdlYmVuLCBsYXNzZW4gc2ljaCBtZWhyIEF1w59lbi0gdW5kIEZlcm5wdW5rdGUgZXJrZW5uZW4uIA0KDQojIyBBbGxlIFByb2JhbmRlbiBvaG5lIEZhcmJmZWhsc2ljaHRpZ2tlaXQgbmFjaCBCZXRyaWVic3N5c3RlbSANCmBgYHtyfQ0KICBub0JDX3N1YnNldF9pT1MgPC1zdWJzZXQoZGZfbm9DQixkZl9ub0NCJE9TID09ICdpT1MnKQ0KICBub0JDX3N1YnNldF9hbmRyb2lkIDwtc3Vic2V0KGRmX25vQ0IsZGZfbm9DQiRPUyA9PSAnQW5kcm9pZCcpDQpgYGANCg0KYGBge3J9DQpmaWcgPC0gcGxvdF9seSh0eXBlID0gImJveCIpDQpmaWcgPC0gZmlnICU+JSBhZGRfdHJhY2UoeSA9IG5vQkNfc3Vic2V0X2lPUyRgUmljaHRpZ2AsIG5hbWU9ICJpT1MiKQ0KZmlnIDwtIGZpZyAlPiUgYWRkX3RyYWNlKHkgPSBub0JDX3N1YnNldF9hbmRyb2lkJGBSaWNodGlnYCwgbmFtZT0iQW5kcm9pZCIpDQoNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh5YXhpcyA9IGxpc3QodGl0bGU9ICJBbnphaGwgcmljaHRpZyBiZWFudHdvcnRldGVyIEF1ZmdhYmVuIiksIA0KICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIlZlcnRlaWx1bmcgcmljaHRpZ2VyIEF1ZmdhYmVuIG5hY2ggQmV0cmllYnNzeXN0ZW0iLA0KICAgICAgICAgICAgICAgICAgICAgIGF1dG9zaXplID0gRikNCmZpZw0KYGBgDQpEaWUgV2VydGUgZGVzIEJveHBsb3RzIG5vY2htYWwgYWxzIFRhYmVsbGU6DQoNCmlPUzoNCmBgYHtyfQ0Kc3VtbWFyeShub0JDX3N1YnNldF9pT1MkYFJpY2h0aWdgKQ0KYGBgDQoNCkFuZHJvaWQ6DQpgYGB7cn0NCnN1bW1hcnkobm9CQ19zdWJzZXRfYW5kcm9pZCRgUmljaHRpZ2ApDQpgYGANCg0KIyBEdXJjaHNjaG5pdHRsaWNoZSBaZWl0IHBybyBBdWZnYWJlIA0KYGBge3J9DQptZWFuX3RwdCA8LSBnZXRfdHB0ZnYoZGZfbm9DQikNCmBgYA0KDQpVbSBlaW5lbiBMZXJuLSBvZGVyIEVybcO8ZHVuZ3NlZmZla3QgenUgZXJrZW5uZW4sIHdlcmRlbiBkaWUgRHVyY2hzY2huaXR0c3plaXRlbiBwcm8gQXVmZ2FiZSBlcmZhc3N0LiBEYXp1IHdlcmRlbiBkaWUgWmVpdGFuZ2FiZW4gZGVyIGVpbnplbG5lbiBBdWZnYWJlbiBpbiBlaW5lciBUYWJlbGxlIHp1c2FtbWVuZ2VmYXNzdC4gQW5zY2hsaWXDn2VuZCB3aXJkIGRlciBEdXJjaHNjaG5pdHQgZGVyIGRlciBTcGFsdGVuIGJlcmVjaG5ldCB1bmQgaW4gZWluZXIgbmV1ZW4gTGlzdGUgZ2VzcGVpY2hlcnQuIERpZXNlcyBWb3JnZWhlbiB3dXJkZSBlYmVuc28gZsO8ciBkaWUgamV3ZWlsaWdlbiBHcnVwcGVuICh6LkIuIGJpb2xvZ2lzY2hlcyBHZXNjaGxlY2h0LCBBbHRlcikgZHVyY2hnZWbDvGhydC4gRGFzIEVyZ2VibmlzIHNpZWh0IHdpZSBmb2xndCBhdXM6DQoNCmBgYHtyfQ0KaGVhZChtZWFuX3RwdCkNCmBgYA0KDQoNCmBgYHtyIHByZXNzdXJlLCBlY2hvPUZBTFNFfQ0KDQpmaWcgPC0gcGxvdF9seShkYXRhPWRmX25vQ0IsIHkgPSB+bWVhbl90cHQsIHR5cGUgPSAnYmFyJykNCg0KZmlnIDwtIGZpZyAlPiUgbGF5b3V0KHRpdGxlID0gIkR1cmNoc2Nobml0dGxpY2hlIFplaXQgcHJvIEF1ZmdhYmUiLA0KICAgICAgICAgICAgICAgICAgICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJBdWZnYWJlbiIpLA0KICAgICAgICAgICAgICAgICAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICdaZWl0IGluIE1pbGxpc2VrdW5kZW4nKSwgDQogICAgICAgICAgICAgICAgICAgICAgYmFybW9kZSA9ICdncm91cCcsDQogICAgICAgICAgICAgICAgICAgICAgYXV0b3NpemUgPSBGKQ0KZmlnDQpgYGANCkRpZSBCZXRyYWNodHVuZyBkZXIgR3JhZmlrLCBsw6Rzc3QgZGFyYXVmIHNjaGxpZcOfZW4sIGRhc3MgZXMgenUgZWluZW0gTGVybmVmZmVrdCBrb21tdC4gVW0gZGllcyB6dSBiZXN0w6R0aWdlbiB3aXJkIGVpbmUgR3JhZmlrIG1pdCBlaW5lciBSZWdyZXNzaW9uZ2VyYWRlIGdlcGxvdHRldC4NCmBgYHtyfQ0KDQpBdWZnYWJlbiA8LSBjKDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCkNCg0KZmlnPC0gcGxvdF9seShkYXRhPSBkZl9ub0NCLCB5PSB+bWVhbl90cHQsIHggPSB+QXVmZ2FiZW4sIHR5cGUgPSAic2NhdHRlciIsIG1vZGU9Im1hcmtlcnMiLCBuYW1lPSJEdXJjaHNjaG5pdHRzemVpdCBwcm8gQXVmZ2FiZSIpDQoNCmZpZyA8LSBhZGRfdHJhY2UoZmlnLCB4PX5BdWZnYWJlbix5PWZpdHRlZChsbShtZWFuX3RwdH5BdWZnYWJlbikpLCBtb2RlID0gImxpbmVzIiwgbmFtZT0iUmVncmVzc2lvbnNnZXJhZGUiKQ0KZmlnIDwtIGZpZyAlPiUgbGF5b3V0KGF1dG9zaXplID0gRiwNCiAgICAgICAgICAgICAgICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAnWmVpdCBpbiBNaWxsaXNla3VuZGVuJyksIA0KICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkR1cmNoc2Nobml0dGxpY2hlIFplaXQgcHJvIEF1ZmdhYmUiKQ0KZmlnDQoNCmBgYA0KRGllIFJlZ3Jlc3Npb25zZ2VyYWRlIGJlc3TDpHRpZ3QgZGllIEFubmFobWUgZGFzIGRpZSBQcm9iYW5kZW4genVtIEVuZGUgZGVzIEV4cGVyaW1lbnRzIGRpZSBBdWZnYWJlbiBzY2huZWxsZXIgZmVydGlnc3RlbGxlbi4gV2FzIGF1ZiBlaW5lbiBMZXJuZWZmZWt0IGJlaSBkZXIgQmVhcmJlaXR1bmcgZGVyIEF1ZmdhYmVuIHNjaGxpZcOfZW4gbMOkc3N0Lg0KDQojIyBOYWNoIGJpb2xvZ2lzY2hlbSBHZXNjaGxlY2h0DQpBbnNjaGxpZcOfZW5kIHdpcmQgw7xiZXJwcsO8ZnQsIGlud2lld2VpdCBkYXMgYmlvbG9naXNjaGUgR2VzY2hsZWNodCBlaW5lbiBFaW5mbHVzcyBhdWYgZGllIGR1cmNoc2Nobml0dGxpY2hlIEJlYXJiZWl0dW5nc3plaXQgZGVyIEF1ZmdhYmVuIGhhYmVuIGvDtm5udGUuDQpgYGB7cn0NCm1lYW5fdHB0X2YgPC0gZ2V0X3RwdGZ2KG5vQkNfc3Vic2V0X2YpDQptZWFuX3RwdF9tIDwtIGdldF90cHRmdihub0JDX3N1YnNldF9tKQ0KYGBgDQoNCmBgYHtyfQ0KZmlnIDwtIHBsb3RfbHkodHlwZSA9ICJiYXIiKQ0KZmlnIDwtIGZpZyAlPiUgYWRkX3RyYWNlKHkgPSB+bWVhbihtZWFuX3RwdF9mKSwgbmFtZSA9ICdXZWlibGljaCcpDQpmaWcgPC0gZmlnICU+JSBhZGRfdHJhY2UoeSA9IH5tZWFuKG1lYW5fdHB0X20pLCBuYW1lID0gJ03DpG5ubGljaCcpDQoNCmZpZyA8LSBmaWcgJT4lIGxheW91dCgNCnhheGlzID0gbGlzdCh0aXRsZSA9ICJBdWZnYWJlbiIpLA0KeWF4aXMgPSBsaXN0KHRpdGxlID0gJ1plaXQgaW4gTWlsbGlzZWt1bmRlbicpLA0KdGl0bGUgPSAiRHVyY2hzY2huaXR0bGljaGUgWmVpdCBwcm8gQXVmZ2FiZSBuYWNoIGJpb2xvZ2lzY2hlbSBHZXNjaGxlY2h0IiwNCmJhcm1vZGUgPSAnZ3JvdXAnLA0KYXV0b3NpemUgPSBGKQ0KDQpmaWcNCmBgYA0KYGBge3J9DQpBdWZnYWJlbiA8LSBjKDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCkNCg0KDQpmaWcgPC0gcGxvdF9seShkYXRhPSBkZl9ub0NCLCB5PSB+bWVhbl90cHRfZiwgeCA9IH5BdWZnYWJlbiwgdHlwZSA9ICJzY2F0dGVyIiwgbW9kZT0ibWFya2VycyIsIG5hbWU9IkR1cmNoc2Nobml0dHN6ZWl0IHBybyBBdWZnYWJlIikNCmZpZyA8LSBhZGRfdHJhY2UoZmlnLCB4PX5BdWZnYWJlbix5PWZpdHRlZChsbShtZWFuX3RwdF9mfkF1ZmdhYmVuKSksIG1vZGUgPSAibGluZXMiLCBuYW1lPSJSZWdyZXNzaW9uc2dlcmFkZSIpDQpmaWcgPC0gZmlnICU+JSBsYXlvdXQoeGF4aXMgPSBsaXN0KHRpdGxlID0gIkF1ZmdhYmVuIiksDQogICAgICAgICAgICAgICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gJ1plaXQgaW4gTWlsbGlzZWt1bmRlbicpLA0KICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIkR1cmNoc2Nobml0dGxpY2hlIFplaXQgcHJvIEF1ZmdhYmUgbmFjaCBiaW9sb2dpc2NoZW0gR2VzY2hsZWNodCAod2VpYmxpY2gpIiwNCiAgICAgICAgICAgICAgICAgICAgICBhdXRvc2l6ZSA9IEYpDQoNCmZpZw0KYGBgDQoNCg0KDQpgYGB7cn0NCmZpZyA8LSBwbG90X2x5KGRhdGE9IGRmX25vQ0IsIHk9IH5tZWFuX3RwdF9tLCB4ID0gfkF1ZmdhYmVuLCB0eXBlID0gInNjYXR0ZXIiLCBtb2RlPSJtYXJrZXJzIiwgbmFtZT0iRHVyY2hzY2huaXR0c3plaXQgcHJvIEF1ZmdhYmUiKQ0KZmlnIDwtIGFkZF90cmFjZShmaWcsIHg9fkF1ZmdhYmVuLHk9Zml0dGVkKGxtKG1lYW5fdHB0X2Z+QXVmZ2FiZW4pKSwgbW9kZSA9ICJsaW5lcyIsIG5hbWU9IlJlZ3Jlc3Npb25zZ2VyYWRlIikNCmZpZyA8LSBmaWcgJT4lIGxheW91dCh4YXhpcyA9IGxpc3QodGl0bGUgPSAiQXVmZ2FiZW4iKSwNCiAgICAgICAgICAgICAgICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAnWmVpdCBpbiBNaWxsaXNla3VuZGVuJyksDQogICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiRHVyY2hzY2huaXR0bGljaGUgWmVpdCBwcm8gQXVmZ2FiZSBuYWNoIGJpb2xvZ2lzY2hlbSBHZXNjaGxlY2h0IChtw6RubmxpY2gpIiwNCiAgICAgICAgICAgICAgICAgICAgICBhdXRvc2l6ZSA9IEYpDQoNCmZpZw0KYGBgDQpEaWUgR3JhZmlrZW4gZXJnZWJlbiBkYXMgZGllIFByb2JhbmRlbiBkaWUgYWxzIGJpb2xvZ2lzY2hlcyBHZXNjaGxlY2h0IG3DpG5ubGljaCBhbmdlYmVuIGR1cmNoc2Nobml0dGxpY2ggMTc2IE1pbGxpc2VrdW5kZW4gbWVociBwcm8gQXVmZ2FiZSBiZW7DtnRpZ2VuLiBCZWkgYmVpZGVuIEdydXBwZW4sIGlzdCBkYXZvbiBhdXN6dWdlaGVuLCBkYXNzIGVpbiBMZXJuZWZmZWt0IHZvcmhhbmRlbiBpc3QuICANCg0KYGBge3J9DQpub0JDX3N1YnNldF8xMSA8LXN1YnNldChkZl9ub0NCLGRmX25vQ0IkJ0FsdGVyJyA9PSAndW50ZXIgMTEnKQ0Kbm9CQ19zdWJzZXRfMTEyMCA8LXN1YnNldChkZl9ub0NCLGRmX25vQ0IkJ0FsdGVyJyA9PSAnMTEtMjAnKQ0Kbm9CQ19zdWJzZXRfMjEzMCA8LXN1YnNldChkZl9ub0NCLGRmX25vQ0IkJ0FsdGVyJyA9PSAnMjEtMzAnKQ0Kbm9CQ19zdWJzZXRfMzE0MCA8LXN1YnNldChkZl9ub0NCLGRmX25vQ0IkJ0FsdGVyJyA9PSAnMzEtNDAnKQ0Kbm9CQ19zdWJzZXRfNDE1MCA8LXN1YnNldChkZl9ub0NCLGRmX25vQ0IkJ0FsdGVyJyA9PSAnNDEtNTAnKQ0Kbm9CQ19zdWJzZXRfNTE2MCA8LXN1YnNldChkZl9ub0NCLGRmX25vQ0IkJ0FsdGVyJyA9PSAnNTEtNjAnKQ0Kbm9CQ19zdWJzZXRfNjAgPC1zdWJzZXQoZGZfbm9DQixkZl9ub0NCJCdBbHRlcicgPT0gJ8O8YmVyIDYwJykNCmBgYA0KDQpgYGB7cn0NCm1lYW5fdHB0XzExPC0gZ2V0X3RwdGZ2KG5vQkNfc3Vic2V0XzExKQ0KbWVhbl90cHRfMTEyMDwtIGdldF90cHRmdihub0JDX3N1YnNldF8xMTIwKQ0KbWVhbl90cHRfMjEzMDwtIGdldF90cHRmdihub0JDX3N1YnNldF8yMTMwKQ0KbWVhbl90cHRfMzE0MDwtIGdldF90cHRmdihub0JDX3N1YnNldF8zMTQwKQ0KbWVhbl90cHRfNDE1MDwtIGdldF90cHRmdihub0JDX3N1YnNldF80MTUwKQ0KbWVhbl90cHRfNTE2MDwtIGdldF90cHRmdihub0JDX3N1YnNldF81MTYwKQ0KbWVhbl90cHRfNjA8LSBnZXRfdHB0ZnYobm9CQ19zdWJzZXRfNjApDQpgYGANCg0KYGBge3J9DQphZ2UgPC0gcGxvdF9seShkYXRhPWRmX25vQ0IsIHk9fm1lYW4obWVhbl90cHRfMTEpLCB0eXBlID0nYmFyJyxuYW1lPSd1bnRlciAxMScpDQphZ2UgPC0gYWdlICU+JSBhZGRfdHJhY2UoeSA9IH5tZWFuKG1lYW5fdHB0XzExMjApLCBuYW1lID0gJzExLTIwJykNCmFnZSA8LSBhZ2UgJT4lIGFkZF90cmFjZSh5ID0gfm1lYW4obWVhbl90cHRfMjEzMCksIG5hbWUgPSAnMjEtMzAnKQ0KYWdlIDwtIGFnZSAlPiUgYWRkX3RyYWNlKHkgPSB+bWVhbihtZWFuX3RwdF8zMTQwKSwgbmFtZSA9ICczMS00MCcpDQphZ2UgPC0gYWdlICU+JSBhZGRfdHJhY2UoeSA9IH5tZWFuKG1lYW5fdHB0XzQxNTApLCBuYW1lID0gJzQxLTUwJykNCmFnZSA8LSBhZ2UgJT4lIGFkZF90cmFjZSh5ID0gfm1lYW4obWVhbl90cHRfNTE2MCksIG5hbWUgPSAnNTEtNjAnKQ0KYWdlIDwtIGFnZSAlPiUgYWRkX3RyYWNlKHkgPSB+bWVhbihtZWFuX3RwdF82MCksIG5hbWUgPSAnw7xiZXIgNjAnKQ0KDQphZ2UgPC0gYWdlICU+JSBsYXlvdXQodGl0bGUgPSAiQWx0ZXJzdmVydGVpbHVuZyIsDQogICAgICAgICAgICAgICAgICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkFsdGVyIiksDQogICAgICAgICAgICAgICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gJ1plaXQgaW4gTWlsbGlzZWt1bmRlbicpLCANCiAgICAgICAgICAgICAgICAgICAgICBiYXJtb2RlID0gJ2dyb3VwJywNCiAgICAgICAgICAgICAgICAgICAgICBhdXRvc2l6ZSA9IEYpDQphZ2UNCmBgYA0K